package leetcode.l0531;

/**
 * @author Retain
 * @date 2021/5/31 19:38
 */
public class EASY_4的幂_342 {

    public static void main(String[] args) {
        System.out.println(isPowerOfFour(4));
        System.out.println(isPowerOfFour(5));
        System.out.println(isPowerOfFour(32));
        System.out.println(isPowerOfFour(64));
    }

    /**
     * 4的幂首先二进制位只有一个1，然后都是在奇数位。因此可以相与求0的个数或者相或求1的个数。
     * 还有一种秒解，看n%3==1？
     * 或者Math.log()
     * @param n
     * @return
     */
    public static boolean isPowerOfFour(int n) {

        if (n <= 0) {
            return false;
        }
        if (Integer.bitCount(n) != 1) {
            return false;
        }
        // 判断1的个数
        int m = n | (-n);

        return  Integer.bitCount(m) % 2 == 0;
    }
}
